package 蓝桥真题;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class 修改数组 {
	   static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
	   final static int N=100010;
	   static int a[]=new int[N],n,p[]=new int[N];
	   static boolean st[]=new boolean[N];
	   
	   static int find(int x){
		      if(p[x]!=x)p[x]=find(p[x]);
		      return p[x];
	   }
       public static void main(String[] ss) throws IOException {
		      n=Integer.parseInt(br.readLine());
		      ss=br.readLine().split(" ");
		      for(int i=0;i<n;i++)
		    	  a[i]=Integer.parseInt(ss[i]);
		     //暴力
//		      for(int i=0;i<n;i++){
//		    	  int t=a[i];
//		    	  while(st[t]){
//		    		   t++;
//		    	  }
//		    	  a[i]=t;
//		    	  st[t]=true;
//		      }
		      //并查集改进
		      for(int i=1;i<=1000000;i++)p[i]=i;
		      for(int i=0;i<n;i++){
		    	  a[i]=find(a[i]);
		    	  p[a[i]]=find(a[i]+1);
		      }
		      for(int i=0;i<n;i++)
		    	  System.out.print(a[i]+" ");
	}
}
